/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.GrupoDePesquisaDAO;
import DAO.InstituicaoDao;
import bean.Autor;
import bean.Coordenacao;
import bean.GrupoDePesquisa;
import bean.Instituicao;
import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author fernando
 */
@ManagedBean
@ViewScoped
public class GrupoDePesquisaBean implements Serializable {

    /**
     * Creates a new instance of GrupoDePesquisaBean
     */
    public void cadastrar() {

        if (new GrupoDePesquisaDAO().cadastrar(grupoDePesquisa)) {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Não foi Possível Cadastrar o Periódico!"));
            this.grupoDePesquisa = new GrupoDePesquisa();
            this.coordenadorSelecionado = new Coordenacao();
            this.parceiraSelecionada = new Instituicao();
            this.linhaDePesquisaSelecionada = new String();
            this.pesquisadorSelecionado = new Autor();
            this.grupoDePesquisa = new GrupoDePesquisa();

        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Não foi Possível Cadastrar o Periódico!"));
        }

    }
    
     public String editar() {
        String resultado = "";
        if (new GrupoDePesquisaDAO().alterar(grupoDePesquisa)) {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage("Sucesso: ", "Grupo de Pesquisa Editado com Sucesso!"));
            resultado = "listar?faces-redirect=true&amp;includeViewParams=true";

        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Não foi Possível Editar o Grupo de Pesquisa!"));
        }
        
        return resultado;

    }
     
    public String selecionarEdicao() {
        String resultado = "";

        this.grupoDePesquisa = new GrupoDePesquisaDAO().buscar(this.grupoDePesquisa.getId());
        
        resultado = "editar?faces-redirect=true&amp;includeViewParams=true";
        return resultado;
    } 

    public GrupoDePesquisaBean() {
        this.grupoDePesquisa = new GrupoDePesquisa();
        this.coordenadorSelecionado = new Coordenacao();
        this.parceiraSelecionada = new Instituicao();
        this.linhaDePesquisaSelecionada = new String();
        this.pesquisadorSelecionado = new Autor();
    }

    public GrupoDePesquisa getGrupoDePesquisa() {
        return grupoDePesquisa;
    }

    public void setGrupoDePesquisa(GrupoDePesquisa grupoDePesquisa) {
        this.grupoDePesquisa = grupoDePesquisa;
    }

    public Coordenacao getCoordenadorSelecionado() {
        return coordenadorSelecionado;
    }

    public void setCoordenadorSelecionado(Coordenacao coordenadorSelecionado) {
        this.coordenadorSelecionado = coordenadorSelecionado;
    }

    public Autor getPesquisadorSelecionado() {
        return pesquisadorSelecionado;
    }

    public void setPesquisadorSelecionado(Autor pesquisadorSelecionado) {
        this.pesquisadorSelecionado = pesquisadorSelecionado;
    }

    public Instituicao getInstituicaoSelecionada() {
        return parceiraSelecionada;
    }

    public void setInstituicaoSelecionada(Instituicao instituicaoSelecionada) {
        this.parceiraSelecionada = instituicaoSelecionada;
    }

    public String getLinhaDePesquisaSelecionada() {
        return linhaDePesquisaSelecionada;
    }

    public void setLinhaDePesquisaSelecionada(String linhaDePesquisaSelecionada) {
        this.linhaDePesquisaSelecionada = linhaDePesquisaSelecionada;
    }

    public void addCoordenador() {
        if (this.grupoDePesquisa.getCoordenadores().contains(this.coordenadorSelecionado)) {
        } else {
            this.grupoDePesquisa.getCoordenadores().add(coordenadorSelecionado);
            this.coordenadorSelecionado = new Coordenacao();
        }
    }

    public void removerCoordenador() {
        this.grupoDePesquisa.getCoordenadores().remove(this.coordenadorSelecionado);
        this.coordenadorSelecionado = new Coordenacao();

    }

    public void addPesquisador() {

        if (this.grupoDePesquisa.getPesquisadores().contains(this.pesquisadorSelecionado)) {
        } else {
            this.grupoDePesquisa.getPesquisadores().add(this.pesquisadorSelecionado);
            this.pesquisadorSelecionado = new Autor();
        }
    }

    public void removerPesquisador() {
        this.grupoDePesquisa.getPesquisadores().remove(this.pesquisadorSelecionado);
        this.pesquisadorSelecionado = new Autor();

    }

    public void addParceira() {
        this.parceiraSelecionada = new InstituicaoDao().consultaInstituicao(this.parceiraSelecionada.getId());
        if (this.grupoDePesquisa.getParceiras().contains(this.parceiraSelecionada)) {
        } else {
            this.grupoDePesquisa.getParceiras().add(this.parceiraSelecionada);
            this.parceiraSelecionada = new Instituicao();
        }
    }

    public void removerParceira() {
        this.grupoDePesquisa.getParceiras().remove(this.parceiraSelecionada);
        this.parceiraSelecionada = new Instituicao();

    }

    public void addLinhaDePesquisa() {

        if (this.grupoDePesquisa.getLinhasDePesquisa().contains(this.linhaDePesquisaSelecionada)) {
        } else {
            this.grupoDePesquisa.getLinhasDePesquisa().add(this.linhaDePesquisaSelecionada);
            this.linhaDePesquisaSelecionada = new String();
        }
    }

    public void removerLinhaDePesquisa() {
        this.grupoDePesquisa.getLinhasDePesquisa().remove(this.linhaDePesquisaSelecionada);
        this.linhaDePesquisaSelecionada = new String();

    }

    public boolean mostrarPainelInterinstitucionais() {
        return this.grupoDePesquisa.isPossuiProjetosInstituicionais();
    }

    public Instituicao getParceiraSelecionada() {
        return parceiraSelecionada;
    }

    public void setParceiraSelecionada(Instituicao parceiraSelecionada) {
        this.parceiraSelecionada = parceiraSelecionada;
    }

    public ArrayList<GrupoDePesquisa> getGruposDePesquisa() {
        if(this.gruposDePesquisa == null){
            gruposDePesquisa = new GrupoDePesquisaDAO().listar();
            
        }
        return gruposDePesquisa;
    }

    public void setGruposDePesquisa(ArrayList<GrupoDePesquisa> gruposDePesquisa) {
        this.gruposDePesquisa = gruposDePesquisa;
    }
    
    
    
    private GrupoDePesquisa grupoDePesquisa;
    private Coordenacao coordenadorSelecionado;
    private Autor pesquisadorSelecionado;
    private Instituicao parceiraSelecionada;
    private String linhaDePesquisaSelecionada;
    private ArrayList<GrupoDePesquisa> gruposDePesquisa;
}
